package 笔试;

import java.util.Arrays;

public class 最少交换次数来组合所有的1 {
    public int minSwaps(int[] data) {
        int count = 0;
        for(int i = 0; i < data.length; i++) {
            if(data[i] == 1) {
                count ++;
            }
        }
        int left = 0;
        int sum = 0;
        int maxOne = 0;
        for(int i = 0; i < count; i++) {
            sum += data[i];
        }
        maxOne = sum;
        for(int i = count; i < data.length; i++) {
            sum += data[i];
            sum -= data[left++];
            if(maxOne < sum) {
                maxOne = sum;
            }
        }
        return count - maxOne;
    }
}
